#include "element.h"

Element::Element(QObject *parent) : QObject(parent),
    EBO(QOpenGLBuffer::IndexBuffer),
    VBO(QOpenGLBuffer::VertexBuffer)
{
    qDebug()<<"element init";
    this->initializeOpenGLFunctions();
}

bool Element::fit(const std::vector<Eigen::Vector3d> &)
{
    return true;
}

void Element::loadGL(QOpenGLWidget *gl)
{
    gl->makeCurrent();
    QOpenGLVertexArrayObject::Binder bind(&VAO);
    EBO.create();
    EBO.bind();
    EBO.allocate(index.data(), sizeof(GLint)*index.size());

    VBO.create();       //生成VBO对象
    VBO.bind();         //将VBO绑定到当前的顶点缓冲对象（QOpenGLBuffer::VertexBuffer）中
    //将顶点数据分配到VBO中，第一个参数为数据指针，第二个参数为数据的字节长度
    VBO.allocate(vertices.data(), sizeof(Eigen::Vector3d)*vertices.size());
    glVertexAttribPointer(0, 3, GL_DOUBLE, GL_FALSE, sizeof(Eigen::Vector3d), (void*)0);
    glEnableVertexAttribArray(0);
    gl->doneCurrent();
}
